home *** CD-ROM | disk | FTP | other *** search
/ The Complete Utilities To…ka 501 Killer Utilities! / 501 Killer Utilities! (Macworld July 1995).cdr / Programming / Mercutio v1.2 - 2⁄19⁄95 / Sample Code / Mercutio API.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-26  |  3.0 KB  |  103 lines  |  [TEXT/MMCC]

  1. /***********************************************************************************
  2. **
  3. **       Developer's Programming Interface for Mercutio Menu Definition Function
  4. **               © 1992-1994 Ramon M. Felciano, All Rights Reserved
  5. **                         C port -- January 17, 1994
  6. **
  7. ************************************************************************************/
  8.  
  9. #define        customDefProcSig    'CUST'
  10. #define        areYouCustomMsg        (short) ('*' * 256 + '*')
  11. #define        getVersionMsg        (short) ('*' * 256 + 'v')
  12. #define        getCopyrightMsg        (short) ('*' * 256 + '©')
  13. #define        setCallbackMsg        (short) ('*' * 256 + 'c')
  14. #define        stripCustomDataMsg    (short) ('*' * 256 + 'd')
  15. #define        setPrefsMsg            (short) ('*' * 256 + 'p')
  16. #define        mMenuKeyMsg            (short) ('S' * 256 + 'K')
  17. #define        mDrawItemStateMsg    (short) ('S' * 256 + 'D')
  18. #define        mCountItemMsg        (short) ('S' * 256 + 'C')
  19.  
  20. #define        cbBasicDataOnlyMsg    1
  21. #define        cbIconOnlyMsg        2
  22. #define        cbGetLongestItemMsg 3
  23.  
  24. typedef struct {
  25.         Style    isDynamicFlag;
  26.         Style    forceNewGroupFlag;
  27.         Style    useCallbackFlag;
  28.         Style    controlKeyFlag;
  29.         Style    optionKeyFlag;
  30.         Style    shiftKeyFlag;
  31.         Style    cmdKeyFlag;
  32.         Style    unusedFlag;
  33.         short    requiredModifiers;
  34.     } MenuPrefsRec, *MenuPrefsPtr;
  35.  
  36. typedef    struct    {
  37.         short    version;
  38.         MenuPrefsRec    thePrefs;
  39.     } MenuResPrefs, *MenuResPrefsPtr, **MenuResPrefsHandle;
  40.     
  41.  
  42. typedef    struct    {    // PACKED RECORD
  43.         char    iconID;
  44.         char    keyEq;
  45.         char    mark;
  46.         Style    textStyle;
  47.     } StdItemData, *StdItemDataPtr;
  48.  
  49.  
  50.  
  51. // ItemFlagsRec is a 2-byte sequence of 1-bit flags. It is defined
  52. // as a short here; use these constants to set the flags.
  53.  
  54. // high byte
  55. #define    kForceNewGroup    0x8000
  56. #define    kIsDynamic        0x4000
  57. #define    kUseCallback    0x2000
  58. #define    kControlKey        0x1000
  59. #define    kOptionKey        0x0800
  60. #define    kUnused10        0x0400
  61. #define kShiftKey        0x0200
  62. #define    kCmdKey            0x0100
  63. // low byte
  64. #define    kIsHier            0x0080
  65. #define    kChangedByCallback    0x0040
  66. #define    kEnabled        0x0020
  67. #define    kHilited        0x0010
  68. #define    kSmallIcon        0x0008
  69. #define    kHasIcon        0x0004
  70. #define    kUnused1        0x0002
  71. #define    kUnused0        0x0001
  72.  
  73. typedef    struct    {
  74.         char    iconID;
  75.         char    keyEq;
  76.         char    mark;
  77.         Style    textStyle;
  78.         short    itemID;
  79.         Rect    itemRect;
  80.         short    flags;
  81.         ResType    iconType;
  82.         Handle    hIcon;
  83.         StringPtr pString;
  84.         Str255    itemStr;
  85.         short    cbMsg;
  86.     } RichItemData, *RichItemPtr;
  87.  
  88.     
  89. extern pascal long MDEF_GetVersion(MenuHandle menu);
  90. extern pascal StringHandle MDEF_GetCopyright(MenuHandle menu);
  91. extern pascal Boolean    MDEF_IsCustomMenu(MenuHandle menu);
  92.  
  93. extern pascal long    MDEF_MenuKey(long theMessage, short theModifiers, MenuHandle hMenu);
  94.                     
  95. extern pascal void    MDEF_CalcItemSize(MenuHandle hMenu, short item, Rect *destRect);
  96. extern pascal void    MDEF_DrawItem(MenuHandle hMenu, short item, Rect destRect);
  97. extern pascal void    MDEF_DrawItemState(MenuHandle hMenu, short item, Rect destRect, Boolean isHilited, Boolean isEnabled);
  98.  
  99. extern pascal void    MDEF_StripCustomData(MenuHandle hMenu);
  100.  
  101. extern pascal void    MDEF_SetCallbackProc(MenuHandle hMenu, ProcPtr theProc);
  102. extern pascal void    MDEF_SetMenuPrefs(MenuHandle hMenu, MenuPrefsRec *thePrefs);
  103.